package vo

import (
	"boy-go/pkg/request"
	"boy-go/pkg/xtime"
	"time"
)

// 菜单信息
type SysMenuModel struct {
	MenuId     int64   `json:"menuId" form:"menuId"`         // 菜单ID
	MenuName   *string `json:"menuName" form:"menuName"`     // 菜单名称
	ParentId   *int64  `json:"parentId" form:"parentId"`     // 父菜单ID
	OrderNum   *int64  `json:"orderNum" form:"orderNum"`     // 显示顺序
	Path       *string `json:"path" form:"path"`             // 路由地址
	Component  *string `json:"component" form:"component"`   // 组件路径
	Query      *string `json:"query" form:"query"`           // 路由参数
	RouteName  *string `json:"routeName" form:"routeName"`   // 路由名称
	IsFrame    *string `json:"isFrame" form:"isFrame"`       // 是否为外链（0是 1否）
	IsCache    *string `json:"isCache" form:"isCache"`       // 是否缓存（0缓存 1不缓存）
	MenuType   *string `json:"menuType" form:"menuType"`     // 菜单类型（M目录 C菜单 F按钮）
	Visible    *string `json:"visible" form:"visible"`       // 菜单状态（0显示 1隐藏）
	Status     *string `json:"status" form:"status"`         // 菜单状态（0正常 1停用）
	Perms      *string `json:"perms" form:"perms"`           // 权限标识
	Icon       *string `json:"icon" form:"icon"`             // 菜单图标
	CreateBy   *string `json:"createBy" form:"createBy"`     // 创建者
	CreateTime *string `json:"createTime" form:"createTime"` // 创建时间
	UpdateBy   *string `json:"updateBy" form:"updateBy"`     // 更新者
	UpdateTime *string `json:"updateTime" form:"updateTime"` // 更新时间
	Remark     *string `json:"remark" form:"remark"`         // 备注
}

func (item *SysMenuModel) CreateAt(t *time.Time) {
	item.CreateTime = xtime.TS.Format(t)
}
func (item *SysMenuModel) UpdateAt(t *time.Time) {
	item.UpdateTime = xtime.TS.Format(t)
}

type QuerySysMenuReq struct {
	request.PageRequest
	ConfigName *string `json:"configName" form:"configName"`
}
type ListSysMenuRsp struct {
	List  []*SysMenuModel
	Total int64
}

type AddSysMenuReq struct {
	MenuId     int64   `json:"menuId" form:"menuId"`         // 菜单ID
	MenuName   *string `json:"menuName" form:"menuName"`     // 菜单名称
	ParentId   *int64  `json:"parentId" form:"parentId"`     // 父菜单ID
	OrderNum   *int64  `json:"orderNum" form:"orderNum"`     // 显示顺序
	Path       *string `json:"path" form:"path"`             // 路由地址
	Component  *string `json:"component" form:"component"`   // 组件路径
	Query      *string `json:"query" form:"query"`           // 路由参数
	RouteName  *string `json:"routeName" form:"routeName"`   // 路由名称
	IsFrame    *string `json:"isFrame" form:"isFrame"`       // 是否为外链（0是 1否）
	IsCache    *string `json:"isCache" form:"isCache"`       // 是否缓存（0缓存 1不缓存）
	MenuType   *string `json:"menuType" form:"menuType"`     // 菜单类型（M目录 C菜单 F按钮）
	Visible    *string `json:"visible" form:"visible"`       // 菜单状态（0显示 1隐藏）
	Status     *string `json:"status" form:"status"`         // 菜单状态（0正常 1停用）
	Perms      *string `json:"perms" form:"perms"`           // 权限标识
	Icon       *string `json:"icon" form:"icon"`             // 菜单图标
	CreateBy   *string `json:"createBy" form:"createBy"`     // 创建者
	CreateTime *string `json:"createTime" form:"createTime"` // 创建时间
	UpdateBy   *string `json:"updateBy" form:"updateBy"`     // 更新者
	UpdateTime *string `json:"updateTime" form:"updateTime"` // 更新时间
	Remark     *string `json:"remark" form:"remark"`         // 备注
}
type AddSysMenuRsp struct {
	MenuId int64 `json:"menuId" form:"menuId"` // 菜单ID
}

type EditSysMenuReq struct {
	MenuId     int64   `json:"menuId" form:"menuId"`         // 菜单ID
	MenuName   *string `json:"menuName" form:"menuName"`     // 菜单名称
	ParentId   *int64  `json:"parentId" form:"parentId"`     // 父菜单ID
	OrderNum   *int64  `json:"orderNum" form:"orderNum"`     // 显示顺序
	Path       *string `json:"path" form:"path"`             // 路由地址
	Component  *string `json:"component" form:"component"`   // 组件路径
	Query      *string `json:"query" form:"query"`           // 路由参数
	RouteName  *string `json:"routeName" form:"routeName"`   // 路由名称
	IsFrame    *string `json:"isFrame" form:"isFrame"`       // 是否为外链（0是 1否）
	IsCache    *string `json:"isCache" form:"isCache"`       // 是否缓存（0缓存 1不缓存）
	MenuType   *string `json:"menuType" form:"menuType"`     // 菜单类型（M目录 C菜单 F按钮）
	Visible    *string `json:"visible" form:"visible"`       // 菜单状态（0显示 1隐藏）
	Status     *string `json:"status" form:"status"`         // 菜单状态（0正常 1停用）
	Perms      *string `json:"perms" form:"perms"`           // 权限标识
	Icon       *string `json:"icon" form:"icon"`             // 菜单图标
	CreateBy   *string `json:"createBy" form:"createBy"`     // 创建者
	CreateTime *string `json:"createTime" form:"createTime"` // 创建时间
	UpdateBy   *string `json:"updateBy" form:"updateBy"`     // 更新者
	UpdateTime *string `json:"updateTime" form:"updateTime"` // 更新时间
	Remark     *string `json:"remark" form:"remark"`         // 备注
}
type EditSysMenuRsp struct {
	MenuId int64 `json:"menuId" form:"menuId"` // 菜单ID
}
